package com.xian.ai.code.service;


import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xian.ai.code.common.BaseResponse;
import com.xian.ai.code.model.dto.user.*;
import com.xian.ai.code.model.entity.User;
import com.xian.ai.code.model.vo.LoginUserVO;
import com.xian.ai.code.model.vo.UserSafeVO;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.util.DigestUtils;

import java.util.List;

/**
 *  服务层。
 *
 * @author Zhangxn
 */
public interface UserService extends IService<User> {

    /***
    * @description: 用户注册的接口，返回响应消息
    * @param userRegisterRequest
    * @return BaseResponse<String>
    * @author Zhangxn
    * @date 2025/7/29
    */
    String userRegister(UserRegisterRequest userRegisterRequest);

    /**
     * 用户登录
     *
     * @param userLoginRequest 用户登录请求参数，包含账号和密码
     * @param request HTTP请求对象，用于存储登录状态
     * @return 登录成功的用户信息
     */
    User userLogin(UserLoginRequest userLoginRequest, HttpServletRequest request);

    /**
     * 获取当前登录用户
     * @param request
     * @return User
     */
    User getLoginUser(HttpServletRequest request);

    /**
     * 用户注销
     * @param request
     * @return
     */
    Boolean userLogout(HttpServletRequest request);

    /**
     * 管理员创建用户
     * @param userAddRequest
     * @return
     */
    Long addUser(UserAddRequest userAddRequest);


    /**
     * 管理员更新用户信息
     * @param userUpdateRequest
     * @return
     */
    Boolean updateUser(UserUpdateRequest userUpdateRequest);



    /**
     * 分页获取用户列表
     * @param userQueryRequest
     * @return
     */
    Page<UserSafeVO> getUserPage(UserQueryRequest userQueryRequest);

    LambdaQueryWrapper<User> getQueryWrapper(UserQueryRequest userQueryRequest) ;


    UserSafeVO getUserVO(User user) ;



    List<UserSafeVO> getUserVOList(List<User> userList) ;


}
